<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /* 
        ReferenceError   定义错误/引用错误

        EvalError
            与eval()有关， 当调用 eval() 失败时抛出。
        RangeError
            数值变量或参数超出了其有效范围
        ReferenceError
            一个无效的引用(eg: strict模式下引用了一个未声明的变量等)
        SyntaxError
            当 JavaScript 语法错误时抛出。
        TypeError
            变量或参数不属于有效类型

        Error    通用错误
    
    
    */


    // var a = 10;
    // console.log(A);

    // eval("console.log(A);")

    // 1 ++ 1    语法错误  SyntaxError

    // new Array(-10);



    // var err = new Error("There is an error!");
    // // console.log(err, typeof err);  // 错误对象
    // // console.dir(err);  //  属性 message stack

    // var err = new ReferenceError("A is not defined!");
    // var err = new RangeError("place input a number bewteen 1 and 100!");
    // var err = new TypeError("parameter one should be number!");

    // throw err;

    // console.log("后续代码");


    // function sum(a, b) {
    //     if (isNaN(a)) {
    //         var err = new TypeError("Parameter one should be of numeric type!");
    //         throw err;
    //     }
    //     if (isNaN(b)) {
    //         var err = new TypeError("Parameter two should be of numeric type!");
    //         throw err;
    //     }

    //     if (!(a >= -(2 ** 53) && a <= 2 ** 53)) {
    //         throw new RangeError("Exceeding the valid range");
    //     }

    //     if (!(b >= -(2 ** 53) && b <= 2 ** 53)) {
    //         throw new RangeError("Exceeding the valid range");
    //     }



    //     return a + b;
    // }

    // var result = sum(1, 2);
    // console.log(result);

    // var result = sum("a", "b");
    // console.log(result);

    // var result = sum(1111111111111111211111, 1111111111111111211111);
    // console.log(result);



</script>

</html>